Skip to content

chore(migration): Migrate code from googleapis/python-bigquery-sqlalchemy into packages/sqlalchemy-bigquery#16046

Merged
chalmerlowe merged 573 commits intomainfrom
migration.python-bigquery-sqlalchemy.migration.2026-03-06_19-24-38.migrate
Mar 16, 2026
Merged

chore(migration): Migrate code from googleapis/python-bigquery-sqlalchemy into packages/sqlalchemy-bigquery#16046
chalmerlowe merged 573 commits intomainfrom
migration.python-bigquery-sqlalchemy.migration.2026-03-06_19-24-38.migrate

Conversation

@parthea
Copy link
Contributor

@parthea parthea commented Mar 6, 2026

See #10990.

This PR should be merged with a merge-commit, not a squash-commit, in order to preserve the git history.

renovate-bot and others added 30 commits January 14, 2022 13:17
* chore(deps): update all dependencies

* deps: try sqlalchemy 1.4.28

* try 1.4.27

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* try 1.4.26

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Co-authored-by: Tim Swast <swast@google.com>
Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [geoalchemy2](https://geoalchemy-2.readthedocs.io/en/latest/) | `==0.10.1` -> `==0.10.2` | [![age](https://badges.renovateapi.com/packages/pypi/geoalchemy2/0.10.2/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/geoalchemy2/0.10.2/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/geoalchemy2/0.10.2/compatibility-slim/0.10.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/geoalchemy2/0.10.2/confidence-slim/0.10.1)](https://docs.renovatebot.com/merge-confidence/) |
| [google-api-core](https://togithub.com/googleapis/python-api-core) | `==2.3.2` -> `==2.4.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-api-core/2.4.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-api-core/2.4.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-api-core/2.4.0/compatibility-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-api-core/2.4.0/confidence-slim/2.3.2)](https://docs.renovatebot.com/merge-confidence/) |
| [google-cloud-bigquery](https://togithub.com/googleapis/python-bigquery) | `==2.31.0` -> `==2.32.0` | [![age](https://badges.renovateapi.com/packages/pypi/google-cloud-bigquery/2.32.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/google-cloud-bigquery/2.32.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/google-cloud-bigquery/2.32.0/compatibility-slim/2.31.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/google-cloud-bigquery/2.32.0/confidence-slim/2.31.0)](https://docs.renovatebot.com/merge-confidence/) |
| [protobuf](https://developers.google.com/protocol-buffers/) | `==3.19.1` -> `==3.19.3` | [![age](https://badges.renovateapi.com/packages/pypi/protobuf/3.19.3/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/protobuf/3.19.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/protobuf/3.19.3/compatibility-slim/3.19.1)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/protobuf/3.19.3/confidence-slim/3.19.1)](https://docs.renovatebot.com/merge-confidence/) |
| [sqlalchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `>=1.2.0,<=1.4.26` -> `>=1.2.0,<=1.4.29` | [![age](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/compatibility-slim/1.4.26)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/confidence-slim/1.4.26)](https://docs.renovatebot.com/merge-confidence/) |
| [sqlalchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | `==1.4.26` -> `==1.4.29` | [![age](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/compatibility-slim/1.4.26)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/sqlalchemy/1.4.29/confidence-slim/1.4.26)](https://docs.renovatebot.com/merge-confidence/) |
| [urllib3](https://urllib3.readthedocs.io/) ([source](https://togithub.com/urllib3/urllib3)) | `==1.26.7` -> `==1.26.8` | [![age](https://badges.renovateapi.com/packages/pypi/urllib3/1.26.8/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/pypi/urllib3/1.26.8/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/pypi/urllib3/1.26.8/compatibility-slim/1.26.7)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/pypi/urllib3/1.26.8/confidence-slim/1.26.7)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>googleapis/python-api-core</summary>

### [`v2.4.0`](https://togithub.com/googleapis/python-api-core/blob/HEAD/CHANGELOG.md#&#8203;240-httpswwwgithubcomgoogleapispython-api-corecomparev232v240-2022-01-11)

[Compare Source](https://togithub.com/googleapis/python-api-core/compare/v2.3.2...v2.4.0)

##### Features

-   add support for 'error_info' ([#&#8203;315](https://www.togithub.com/googleapis/python-api-core/issues/315)) ([cc46aa6](https://www.github.com/googleapis/python-api-core/commit/cc46aa68ec184871330d16a6c767f57a4f0eb633))
-   iterator for processing JSON responses in REST streaming. ([#&#8203;317](https://www.togithub.com/googleapis/python-api-core/issues/317)) ([f9f2696](https://www.github.com/googleapis/python-api-core/commit/f9f26969842b456ea372bed941d712b7a9ab7239))

</details>

<details>
<summary>googleapis/python-bigquery</summary>

### [`v2.32.0`](https://togithub.com/googleapis/python-bigquery/blob/HEAD/CHANGELOG.md#&#8203;2320-httpsgithubcomgoogleapispython-bigquerycomparev2310v2320-2022-01-12)

[Compare Source](https://togithub.com/googleapis/python-bigquery/compare/v2.31.0...v2.32.0)

##### Features

-   support authorized dataset entity ([#&#8203;1075](https://togithub.com/googleapis/python-bigquery/issues/1075)) ([c098cd0](https://togithub.com/googleapis/python-bigquery/commit/c098cd01c755633bfaba7193dd5c044a489a5b61))

##### Bug Fixes

-   remove query text from exception message, use `exception.debug_message` instead ([#&#8203;1105](https://togithub.com/googleapis/python-bigquery/issues/1105)) ([e23114c](https://togithub.com/googleapis/python-bigquery/commit/e23114ce362e09ac72f733a640e53a561cc9ce69))

</details>

<details>
<summary>urllib3/urllib3</summary>

### [`v1.26.8`](https://togithub.com/urllib3/urllib3/releases/1.26.8)

[Compare Source](https://togithub.com/urllib3/urllib3/compare/1.26.7...1.26.8)

**If you or your organization rely on urllib3 consider supporting us via [GitHub Sponsors](https://togithub.com/sponsors/urllib3).**

⚠️ **urllib3 v2.0 will drop support for Python 2**: [Read more in the v2.0 Roadmap](https://urllib3.readthedocs.io/en/latest/v2-roadmap.html)

:warning: **This release will be the last release supporting Python 3.5. Please upgrade to a non-EOL Python version.**

-   Added extra message to`urllib3.exceptions.ProxyError` when urllib3 detects that a proxy is configured to use HTTPS but the proxy itself appears to only use HTTP.
-   Added a mention of the size of the connection pool when discarding a connection due to the pool being full.
-   Added explicit support for Python 3.11.
-   Deprecated the `Retry.MAX_BACKOFF` class property in favor of `Retry.DEFAULT_MAX_BACKOFF` to better match the rest of the default parameter names. `Retry.MAX_BACKOFF` is removed in v2.0.
-   Changed location of the vendored `ssl.match_hostname` function from `urllib3.packages.ssl_match_hostname` to `urllib3.util.ssl_match_hostname` to ensure Python 3.10+ compatibility after being repackaged by downstream distributors.
-   Fixed absolute imports, all imports are now relative.

</details>

---

### Configuration

📅 **Schedule**: At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, click this checkbox.

---

This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#github/googleapis/python-bigquery-sqlalchemy).
Source-Link: googleapis/synthtool@4760d8d
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:f0e4b51deef56bed74d3e2359c583fc104a8d6367da3984fc5c66938db738828

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
* ci(python): run lint / unit tests / docs as GH actions

Source-Link: googleapis/synthtool@57be0cd
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:ed1f9983d5a935a89fe8085e8bb97d94e41015252c5b6c9771257cf8624367e6

* add commit to trigger gh actions

* exclude templated github actions

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
* chore: add custom sync repo settings

* add required checks for samples

* Update .github/sync-repo-settings.yaml

Co-authored-by: Tim Swast <swast@google.com>
…te compliance tests (#401)

* test: add prerelease session to test with latest dependencies

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* Revert "🦉 Updates from OwlBot"

This reverts commit 01aca604c47d42444f6a01dcde7653ccced13b1b.

* Avoid owlbot from overwriting my changes

* split compliance and prerelease tests out

* remove newline escape

* escape regex

* 🦉 Updates from OwlBot

See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md

* remove unused [all]

* disallow latest pytest due to incompatibilities

* only use single python for compliance testing

* comment about transitive deps

Also, remove google-resumable-media from prerelease tests, as this package does
not use load jobs.

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Fixes #409 🦕 To enable credential information to be included in the connection URL, for cases where you don't have a credentials file locally on the client, I propose the `credentials_base64` parameter. It requires that the user have encoded their credentials JSON file using a number of techniques like `base64`, or `openssl base64`, or `python -m base64`, or www.base64encode.org.

I have used nox to run unit and system tests for Python 3.6 - 3.9. I'm tracking down a separate issue with my computer for why 3.10 tests did not run.


- [x] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/python-bigquery-sqlalchemy/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [x] Ensure the tests and linter pass
- [x] Code coverage does not decrease (if any source code was changed)
- [x] Appropriate docs were updated (if necessary)
* fix: POSTCOMPILE expansion in SQLAlchemy 1.4.27+

Handle the new double underscore prefix for POSTCOMPILE variables introduced in this version.

* build: Widen sqlalchemy version support to include 1.4.27

* fix: IN expansion compliance test

* fix(coverage): skip expansion coverage checks
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Source-Link: googleapis/synthtool@82f5cb2
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:5d8da01438ece4021d135433f2cf3227aa39ef0eaccc941d62aa35e6902832ae

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: Anthonios Partheniou <partheniou@google.com>
* chore(deps): update all dependencies

* revert change

* limit max supported version for sqlalchemy to 1.4.27

* revert change

* revert change

* fix typo

* fix typo

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
* chore(deps): update all dependencies

* revert

* revert

* revert

* revert

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
* chore(deps): update all dependencies

* revert

* revert

* revert

* revert

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
* chore(deps): update all dependencies

* revert

* revert

* revert

* revert

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Remove the engine fixture from unit tests and use faux_conn instead. Creating
an engine requires credentials, which prevents these tests from being pure unit
tests and running in any environment.

Fixes #430 🦕
use explicit rather than implicit relative imports

Fixes #432 🦕
…ing (#414)

The wrapped DB-API uses google-cloud-bigquery-storage to download query
results by default. It raises a warning and falls back to the REST API
if google-cloud-bigquery-storage is not installed.

The google-cloud-bigquery version 3.x library is tested in #401 and it does not include any breaking changes that should affect the SQLAlchemy connector.

deps: allow google-cloud-bigquery version 3.x

Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly:
- [ ] Make sure to open an issue as a [bug/issue](https://github.com/googleapis/python-bigquery-sqlalchemy/issues/new/choose) before writing your code!  That way we can discuss the change, evaluate designs, and agree on the general idea
- [ ] Ensure the tests and linter pass
- [ ] Code coverage does not decrease (if any source code was changed)
- [ ] Appropriate docs were updated (if necessary)

Fixes #<issue_number_goes_here> 🦕
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Source-Link: googleapis/synthtool@6fab84a
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:7cffbc10910c3ab1b852c05114a08d374c195a81cdec1d4a67a1d129331d0bfe
* chore(deps): update all dependencies

* revert changes

* revert sqlalchemy

* revert pytest

* revert pytest

* chore: update grpcio to match grpcio-status

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
Source-Link: googleapis/synthtool@7ff4aad
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:462782b0b492346b2d9099aaff52206dd30bc8e031ea97082e6facecc2373244
)

Source-Link: googleapis/synthtool@7804ade
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:eede5672562a32821444a8e803fb984a6f61f2237ea3de229d2de24453f4ae7d
Source-Link: googleapis/synthtool@06e8279
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:b3500c053313dc34e07b1632ba9e4e589f4f77036a7cf39e1fe8906811ae0fce
Source-Link: googleapis/synthtool@993985f
Post-Processor: gcr.io/cloud-devrel-public-resources/owlbot-python:latest@sha256:1894490910e891a385484514b22eb5133578897eb5b3c380e6d8ad475c6647cd
#### Summary

`dev_requirements.txt` was recently changed to upgrade the dependency on pytest-flake8 from 1.1.0 to 1.1.1. Unfortunately, pytest-flake8 requires pytest 7 or above, and the current pinned dependency for pytest is 6.2.5. I tried moving up to pytest 7 but it seems like there's a decent amount of work going into that, so in order to fix main, this PR moves the pytest-flake8 pinned version back to 1.1.0.

Fixes #445.
* chore(deps): update all dependencies

* use === to prevent future updates

* use === to prevent future updates

* use === to prevent future updates

* use === to prevent future updates

* use === to prevent future updates

* revert

Co-authored-by: Anthonios Partheniou <partheniou@google.com>
@parthea parthea marked this pull request as ready for review March 10, 2026 13:34
@parthea parthea requested review from a team as code owners March 10, 2026 13:34
@chalmerlowe chalmerlowe merged commit d3d960b into main Mar 16, 2026
31 of 32 checks passed
@chalmerlowe chalmerlowe deleted the migration.python-bigquery-sqlalchemy.migration.2026-03-06_19-24-38.migrate branch March 16, 2026 11:46
@chalmerlowe chalmerlowe removed the do not merge Indicates a pull request not ready for merge, due to either quality or timing. label Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.